package cn.yunyichina.provider.iface.entity.message;

import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;

/**
 * 支付宝Card消息推送请求对象
 * Created by Lullaby on 2017/7/25
 */
@Getter
@Setter
public class RegCardNoticeRequestVO implements Serializable {

    private NoticeMode noticeMode; //REGISTRATION

    private String appId; //应用app_id

    private String templateId; //模板ID(医疗服务平台提供)

    private String userId; //支付宝用户ID

    private String appCode; //应用唯一ID(医疗服务平台提供)

    private String dataType; //REG

    private String operate;//操作类型：创建并更新:CREATE_UPDATE 删除:DELETE

    private String thirdNo; //第三方唯一序列号

    private String patientName; //患者姓名

    private String patientCardType; //证件类型(可空)

    private String patientCardNo; //患者证件号码(可空)

    private HosInfo hosInfo; //医院信息

    @Getter
    @Setter
    public static class HosInfo implements Serializable {

        private String code; //医院唯一标识

        private String name; //医院名称

        private String phone; //医院联系电话

    }

    private DeptInfo deptInfo; //科室信息

    @Getter
    @Setter
    public static class DeptInfo implements Serializable {

        private String code; //科室唯一标识

        private String name; //科室名称

        private String location; //科室位置

        private String parentCode; //父科室唯一标识如果是顶层科室可空

        private String parentName; //父科室名称(可空)

    }

    private DoctorInfo doctorInfo; //医生信息(如果确定医生则不可空)

    @Getter
    @Setter
    public static class DoctorInfo implements Serializable {

        private String code; //医生唯一标识

        private String name; //医生名称

        private String sex; //女性：F 男性：M 未知：U

    }

    private String treatDate; //就诊日期格式为yyyy-MM-dd HH:mm:ss

    private String treatDateExt; //显示就诊时间(可空) - 显示就诊日期json 格式：两类：时间区间类型：range 中文显示类型：cn 备注：1.range 类型 HH:mm-HH:mm 中间中横线隔开 2.cn 类型 上午 1 下午 2 晚上 3

    private String lineNo; //排队号

    private String bizType; //业务类型 挂号成功：REG_SUCCESS 挂号取销：REG_CANCEL

    private String notifyTime; //通知日期,如果不传通知时间，逻辑由支付宝内部消化判断格式为yyyy-MM-dd HH:mm:ss(可空)

    private String cancelReason; //取消原因 备注: 业务类型是REG_CANCEL，不可空

    private String orderLink; //订单详情链接

    private String regLink; //重新预约医生链接 备注:状态是REG_CANCEL，不可空

    private String cancelDesc; //撤销说明

    private String extendParams; //业务扩展参数json格式(可空)

    // 推送类别
    public enum NoticeMode {
        REGISTRATION, // 挂号
        TREATMENT, // 诊间
        HOSPITALIZATION, // 住院
        COMMON // 非医院类
    }

}
